package org.example;

import java.util.Arrays;

public class Main {
    public int triangleNumber(int[] nums) {

        //优化 将数组进行排序
        Arrays.sort(nums);

        //利用双指针法解决问题
        int count = 0;
        for(int i = nums.length - 1;i >= 2;i--) {  //i为最大的数
            //利用双指针快速统计出符合要求的三元组的个数
            int left = 0,right = i - 1;
            while(left < right) {
                if(nums[left] + nums[right] > nums[i]) {
                    count += right - left;
                    right--;
                }else {
                    left++;
                }
            }
        }
        return count;
    }
}